package com.util;

import java.util.ArrayList;

import com.main.EasyLunch;
import com.modele.dao.impl.GroupeDAO;
import com.modele.dao.impl.RestaurantDAO;
import com.modele.dao.impl.TypeRestaurantDAO;
import com.modele.dao.impl.UtilisateurDAO;
import com.modele.entity.Groupe;
import com.modele.entity.Utilisateur;
import com.vue.Arbo_TR;

/**Classe permettant la mise a jour de la liste des groupe en fonction de la BD**/

public class ThreadMajListGrp  extends Thread{
	
	private Arbo_TR arboPan;
	
	public ThreadMajListGrp (Arbo_TR arboPan) {
		this.arboPan = arboPan;
	}
	
	public void run() {

		while (true) {
			ArrayList <Groupe> listeGrp;
			listeGrp = this.recupListGrp();
			this.arboPan.setlisteGrp(listeGrp);
			this.arboPan.getMajArboTR().setListeGroupesTotale(listeGrp);
			
			try {
				Thread.sleep(3000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public ArrayList <Groupe> recupListGrp() {
		ArrayList <Groupe> listeGrp = new ArrayList <Groupe>();
		GroupeDAO groupeDAO = (GroupeDAO) EasyLunch.getFactory().getGroupeDAO();
		UtilisateurDAO utilisateurDAO = (UtilisateurDAO) EasyLunch.getFactory().getUtilisateurDAO();
		RestaurantDAO restaurantDAO = (RestaurantDAO) EasyLunch.getFactory().getRestaurantDAO();
		TypeRestaurantDAO typeRestaurantDAO = (TypeRestaurantDAO) EasyLunch.getFactory().getTypeRestaurantDAO();
		
		
		listeGrp = (ArrayList<Groupe>) groupeDAO.findAll();
		
		for (Groupe grp : listeGrp) {
			grp.setRestaurant(restaurantDAO.findByValue(grp.getIdRestaurant()));
			grp.getRestaurant().setTypeRestaurant(typeRestaurantDAO.find(Integer.parseInt(restaurantDAO.findByValue(grp.getIdRestaurant()).getIdTypeRestaurant())));
			grp.setListeUtilisateursGrp((ArrayList<Utilisateur>) utilisateurDAO.findAllByIdGroupe(grp.getIdGroupe()));
		}
		return listeGrp;
	}
}
